package a_13届蓝桥真题;
/*
这天小明正在学数数。
他突然发现有些正整数的形状像1座“山”，比如123565321、145541，
它们左右对称(回文)且数位.上的数字先单调不减，后单调不增。
小明数了很久也没有数完，他想让你告诉他在区间[2022, 2022222022]中有
多少个数的形状像1座“山”。

注意先单调不减，后单调不增
 */
public class b山 {
	public static void main(String[] args) {
		b山 test = new b山();
		long start = System.currentTimeMillis();
		test.useDeal();
		long end = System.currentTimeMillis();
		System.out.println(end - start + "ms");
		/*
		3138
		52959ms
		 */
	}
	
	public void useDeal() {
		int count = 0;
		for (int i = 2022; i < 2022222022 + 1; i++) {
			if (deal(i) && check(i)) {
				count++;
			}
		}
		System.out.println(count);
	}
	
	/**
	 * 很巧妙的，满足了，不管长度是奇数还是偶数，都没有bug
	 * @param n
	 * @return
	 */
	public boolean deal(int n) {
		String string = Integer.toString(n);
		for (int i = 0, r = string.length() - 1; i < r; i++,r--) {
			if (string.charAt(i) != string.charAt(r)) {
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 很巧妙的，满足了，不管长度是奇数还是偶数，都没有bug
	 * @param n
	 * @return
	 */
	public boolean check(int n) {
		String string = Integer.toString(n);
		for (int i = 0; i < string.length() / 2; i++) {
			if (string.charAt(i) > string.charAt(i + 1)) {
				return false;
			}
		}
		return true;
	}
}
